package com.cdpm.web.controller.common;

import com.cdpm.common.core.controller.BaseController;
import com.cdpm.common.core.domain.model.LoginUser;
import com.cdpm.common.core.page.TableDataInfo;
import com.cdpm.common.utils.CollectionUtil;
import com.cdpm.common.utils.DateUtils;
import com.cdpm.common.utils.SecurityUtils;
import com.cdpm.common.utils.StringUtils;
import com.cdpm.common.utils.bean.BeanUtils;
import com.cdpm.system.domain.MessageConfig;
import com.cdpm.system.domain.TStrategyConfig;
import com.cdpm.system.service.IMessageConfigService;
import com.cdpm.web.dto.*;
import com.cdpm.web.dto.req.*;
import com.cdpm.web.dto.res.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @description:
 * @author: longjy
 * @create: 2024-09-09 15:07
 **/
@RestController
@RequestMapping("/message")
public class MessageController extends BaseController {

    @Resource
    IMessageConfigService iMessageConfigService;

    /**
     * 消息配置列表查询
     */
    @PostMapping("/queryMessageConfigList")
    public QueryMessageConfigListResDTO queryMessageConfigList(@RequestBody QueryMessageConfigListReqDTO queryMessageConfigListReqDTO){
        QueryMessageConfigListResDTO queryMessageConfigListResDTO = new QueryMessageConfigListResDTO();
        startPage();
        List<MessageConfigDTO> list = new ArrayList<>();
        MessageConfig messageConfig = new MessageConfig();
        BeanUtils.copyBeanProp(messageConfig,queryMessageConfigListReqDTO);
        if(StringUtils.isNotEmpty(queryMessageConfigListReqDTO.getTemplateId())){
            messageConfig.setTemplateId(Long.parseLong(queryMessageConfigListReqDTO.getTemplateId()));
        }
        List<MessageConfig> messageConfigs = iMessageConfigService.findList(messageConfig);
        TableDataInfo dataTable = getDataTable(messageConfigs);
        queryMessageConfigListResDTO.setRows(dataTable.getRows());
        queryMessageConfigListResDTO.setTotal(dataTable.getTotal());
        queryMessageConfigListResDTO.setMsg(dataTable.getMsg());
        queryMessageConfigListResDTO.setCode(dataTable.getCode());
        if(CollectionUtil.isNotEmpty(queryMessageConfigListResDTO.getRows())){
            List<MessageConfig> messageConfigList = (List<MessageConfig>)queryMessageConfigListResDTO.getRows();
            for (MessageConfig messageConfig1 : messageConfigList) {
                MessageConfigDTO messageConfigDTO = new MessageConfigDTO();
                BeanUtils.copyBeanProp(messageConfigDTO,messageConfig1);
                messageConfigDTO.setTemplateId(messageConfig1.getTemplateId()+"");
                messageConfigDTO.setInsertTimeStr(DateUtils.parseDateToStr(messageConfig1.getInsertTime(),"yyyy-MM-dd HH:mm:ss"));
                messageConfigDTO.setUpdateTimeStr(DateUtils.parseDateToStr(messageConfig1.getUpdateTime(),"yyyy-MM-dd HH:mm:ss"));
                list.add(messageConfigDTO);
            }
        }
        queryMessageConfigListResDTO.setRows(list);
        return queryMessageConfigListResDTO;
    }


    /**
     * 消息配置详情查询
     */
    @PostMapping("/deleteMessageConfigById")
    public DeleteMessageConfigByIdResDTO deleteMessageConfigById(@RequestBody DeleteMessageConfigByIdReqDTO deleteMessageConfigByIdReqDTO){
        DeleteMessageConfigByIdResDTO deleteMessageConfigByIdResDTO = new DeleteMessageConfigByIdResDTO();
        deleteMessageConfigByIdResDTO.setCode("200");
        deleteMessageConfigByIdResDTO.setMessage("删除成功");
        long templateId = Long.parseLong(deleteMessageConfigByIdReqDTO.getTemplateId());
        MessageConfig messageConfig = iMessageConfigService.findById(templateId);
        LoginUser loginUser = SecurityUtils.getLoginUser();
        messageConfig.setUpdateUser(loginUser.getUser().getUserName()+"");
        messageConfig.setUpdateTime(new Date());
        messageConfig.setIsDelete("1");
        iMessageConfigService.update(messageConfig);
        return deleteMessageConfigByIdResDTO;
    }


    /**
     * 新增或更新消息配置
     */
    @PostMapping("/insertOrUpdateMessageConfig")
    public InsertOrUpdateMessageConfigReSDTO insertOrUpdateMessageConfig(@RequestBody InsertOrUpdateMessageConfigReqDTO insertOrUpdateMessageConfigReqDTO){
        InsertOrUpdateMessageConfigReSDTO insertOrUpdateMessageConfigReSDTO = new InsertOrUpdateMessageConfigReSDTO();
        String templateId = insertOrUpdateMessageConfigReqDTO.getTemplateId();
        MessageConfig messageConfig = new MessageConfig();
        BeanUtils.copyBeanProp(messageConfig,insertOrUpdateMessageConfigReqDTO);
        if(StringUtils.isNotEmpty(insertOrUpdateMessageConfigReqDTO.getTemplateId())){
            messageConfig.setTemplateId(Long.parseLong(insertOrUpdateMessageConfigReqDTO.getTemplateId()));
        }
        if(StringUtils.isNotEmpty(templateId)){
            //更新
            iMessageConfigService.update(messageConfig);
            insertOrUpdateMessageConfigReSDTO.setMsg("更新成功");
        }else{
            //新增
            iMessageConfigService.insert(messageConfig);
            insertOrUpdateMessageConfigReSDTO.setMsg("新增成功");
        }
        return insertOrUpdateMessageConfigReSDTO;
    }
}
